home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 August: Tool Chest / Dev.CD Aug 00 TC Disk 2.toast / pc / sample code / quicktime / streaming / qtspacketizerreassembler / imaaudiortp / sources / tcycle.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-06-23  |  1.4 KB  |  109 lines

  1. /*
  2.     File:        TCycle.c
  3.     
  4.     Contains:    Definition of operations for TCycle, a cyclic list element datatype
  5.     
  6.     Copyright:    © 1997-1999 by Apple Computer, Inc., all rights reserved.
  7.     
  8. */
  9.  
  10.  
  11.  
  12. #include "TCycle.h"
  13. #include <MacMemory.h>
  14.  
  15.  
  16.  
  17. extern
  18. TCycle **
  19. CycleNew(
  20.     unsigned long    inSize )
  21. {
  22.     TCycle **    cycleNew;
  23.     
  24.     
  25.     if( inSize < sizeof( **cycleNew ) )
  26.         inSize = sizeof( **cycleNew );
  27.     
  28.     cycleNew = ( TCycle ** ) NewHandle( inSize );
  29.     
  30.     if( cycleNew )
  31.         ( **cycleNew ).__itsNext = cycleNew;
  32.     
  33.     return( cycleNew );
  34. }
  35.  
  36.  
  37.  
  38. extern
  39. void
  40. CycleDispose(
  41.     TCycle **    inElement )
  42. {
  43.     if( inElement )
  44.     {
  45.         if( ( **inElement ).__itsNext == inElement )
  46.             DisposeHandle( ( Handle ) inElement );
  47.     }
  48. }
  49.  
  50.  
  51.  
  52. extern
  53. TCycle **
  54. CyclePut(
  55.     TCycle **    inList,
  56.     TCycle **    inElement )
  57. {
  58.     TCycle **    cyclePut = inList;
  59.     
  60.     
  61.     if( inList  &&  inElement )
  62.     {
  63.         if( ( **inElement ).__itsNext == inElement )
  64.         {
  65.             ( **inElement ).__itsNext = ( **inList ).__itsNext;
  66.             ( **inList ).__itsNext = inElement;
  67.             cyclePut = inElement;
  68.         }
  69.     }
  70.     
  71.     return( cyclePut );
  72. }
  73.  
  74.  
  75.  
  76. extern
  77. TCycle **
  78. CycleGet(
  79.     TCycle **    inList )
  80. {
  81.     TCycle **    cycleGet = 0;
  82.     
  83.     
  84.     if( inList )
  85.     {
  86.         cycleGet = ( **inList ).__itsNext;
  87.         ( **inList ).__itsNext = ( **cycleGet ).__itsNext;
  88.         ( **cycleGet ).__itsNext = cycleGet;
  89.     }
  90.     
  91.     return( cycleGet );
  92. }
  93.  
  94.  
  95.  
  96. extern
  97. TCycle **
  98. CycleNext(
  99.     TCycle **    inElement )
  100. {
  101.     TCycle **    cycleNext = 0;
  102.     
  103.     
  104.     if( inElement )
  105.         cycleNext = ( **inElement ).__itsNext;
  106.     
  107.     return( cycleNext );
  108. }
  109.